home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / PCCardEnablerPlugin.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  15.7 KB  |  368 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        PCCardEnablerPlugin.p
  3.  
  4.      Contains:    ???
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1997-1998 by Apple Computer, Inc. and SystemSoft Corporation.  All rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT PCCardEnablerPlugin;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __PCCARDENABLERPLUGIN__}
  28. {$SETC __PCCARDENABLERPLUGIN__ := 1}
  29.  
  30. {$I+}
  31. {$SETC PCCardEnablerPluginIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __NAMEREGISTRY__}
  38. {$I NameRegistry.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __INTERRUPTS__}
  41. {$I Interrupts.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __PCCARD__}
  44. {$I PCCard.p}
  45. {$ENDC}
  46.  
  47.  
  48. {$PUSH}
  49. {$ALIGN POWER}
  50. {$LibExport+}
  51.  
  52. {$IFC UNDEFINED __CARDSERVICES__ }
  53. {
  54.     NOTE: These prototypes conflict with CardServices.≈
  55.           You cannot use both PCCardEnablerPlugin.h and CardServices.h
  56.           
  57. }
  58.  
  59. {    Copyright:    © 1996 SystemSoft Corporation, all rights reserved. }
  60. {------------------------------------------------------------------------------------
  61.     Card Services calls exported by the Family
  62. ------------------------------------------------------------------------------------}
  63. {     Card Services for Card Enablers }
  64.  
  65. FUNCTION CSGetCardServicesInfo(VAR socketCount: UInt32; VAR complianceLevel: UInt32; VAR version: UInt32): OSStatus; C;
  66.  
  67. {  Function prototypes for tuples calls  }
  68.  
  69. FUNCTION CSGetFirstTuple(socket: PCCardSocket; device: UInt32; tupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; tupleData: UNIV Ptr; VAR tupleBufferSize: ByteCount; VAR foundTuple: Byte): OSStatus; C;
  70. FUNCTION CSGetNextTuple(tupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; tupleData: UNIV Ptr; VAR tupleBufferSize: ByteCount; VAR foundTuple: Byte): OSStatus; C;
  71.  
  72. {  Function prototypes for window calls }
  73.  
  74. FUNCTION CSRequestWindow(vSocket: PCCardSocket; device: UInt32; windowAttributes: PCCardWindowAttributes; windowSpeed: PCCardAccessSpeed; VAR windowBase: LogicalAddress; VAR windowSize: PCCardWindowSize; VAR windowOffset: PCCardWindowOffset; VAR requestedWindow: PCCardWindowID): OSStatus; C;
  75. FUNCTION CSReleaseWindow(windowToRelease: PCCardWindowID): OSStatus; C;
  76. FUNCTION CSModifyWindow(windowToModify: PCCardWindowID; windowAttributes: PCCardWindowType; memorySpeed: PCCardAccessSpeed; VAR windowOffset: PCCardWindowOffset): OSStatus; C;
  77. FUNCTION CSGetWindowBaseAddress(window: PCCardWindowID; VAR baseAddress: LogicalAddress): OSStatus; C;
  78. FUNCTION CSInquireWindow(vSocket: PCCardSocket; device: UInt32; windowID: PCCardWindowID; VAR windowAttributes: PCCardWindowAttributes; VAR windowParam: PCCardAccessSpeed; VAR windowBase: UInt32; VAR windowSize: PCCardWindowSize; VAR windowOffset: PCCardWindowOffset): OSStatus; C;
  79. {  Function prototypes for CIS calls }
  80.  
  81. FUNCTION CSValidateCIS(vSocket: PCCardSocket; device: UInt32; VAR cisChainCount: UInt32): OSStatus; C;
  82. FUNCTION CSGetDeviceCount(vSocket: PCCardSocket; VAR deviceCount: UInt32): OSStatus; C;
  83.  
  84. {  Function prototypes for Status calls }
  85.  
  86. FUNCTION CSGetStatus(vSocket: PCCardSocket; VAR currentState: UInt32; VAR changedState: UInt32; VAR Vcc: PCCardVoltage; VAR Vpp: PCCardVoltage): OSStatus; C;
  87.  
  88. {  Function prototypes for configuration calls }
  89.  
  90. FUNCTION CSRequestConfiguration(vSocket: PCCardSocket; device: UInt32; configOptions: PCCardConfigOptions; socketInterface: PCCardInterfaceType; customInterface: PCCardCustomInterfaceID; vcc: PCCardVoltage; vpp: PCCardVoltage; IRQ: PCCardIRQ; DMA: PCCardDMA; configRegBaseAddress: UInt32; configRegPresentMask: PCCardConfigPresentMask; VAR configReg: PCCardFunctionConfigReg): OSStatus; C;
  91. FUNCTION CSModifyConfiguration(vSocket: PCCardSocket; device: UInt32; modifyAttributes: PCCardConfigOptions; IRQ: PCCardIRQ; DMA: PCCardDMA; Vpp: PCCardVoltage): OSStatus; C;
  92. FUNCTION CSReleaseConfiguration(vSocket: PCCardSocket; device: UInt32): OSStatus; C;
  93. FUNCTION CSSetRingIndicate(vSocket: PCCardSocket; setRingIndicate: BOOLEAN): OSStatus; C;
  94. FUNCTION CSResetFunction(vSocket: PCCardSocket; device: UInt32): OSStatus; C;
  95. FUNCTION CSReadConfigurationRegister(vSocket: PCCardSocket; device: UInt32; whichRegister: PCCardConfigPresentMask; configRegBaseAddress: UInt32; VAR registerValue: UInt8): OSStatus; C;
  96. FUNCTION CSWriteConfigurationRegister(vSocket: PCCardSocket; device: UInt32; whichRegister: PCCardConfigPresentMask; configRegBaseAddress: UInt32; registerValue: ByteParameter): OSStatus; C;
  97. { Function prototypes for Client Support calls}
  98. FUNCTION CSRegisterClient(vSocket: PCCardSocket; eventMask: PCCardEventMask; clientCallBack: PCCardEventHandler; clientParam: UNIV Ptr; VAR newClientID: PCCardClientID): OSStatus; C;
  99. FUNCTION CSDeRegisterClient(theClientID: PCCardClientID): OSStatus; C;
  100. FUNCTION CSSetEventMask(theClientID: PCCardClientID; newEventMask: PCCardEventMask): OSStatus; C;
  101. FUNCTION CSGetEventMask(theClientID: PCCardClientID; VAR newEventMask: PCCardEventMask): OSStatus; C;
  102. FUNCTION CSRegisterTimer(registeredClientID: PCCardClientID; VAR lpNewTimerID: PCCardTimerID; delay: LONGINT): OSStatus; C;
  103. FUNCTION CSDeRegisterTimer(timerID: PCCardTimerID): OSStatus; C;
  104. { Function prototypes for CardBus Config Space access}
  105. FUNCTION CSReadCardBusConfigSpace(vSocket: PCCardSocket; device: UInt32; configOffset: UInt32; VAR data: Byte; dataSize: UInt32): OSStatus; C;
  106. FUNCTION CSWriteCardBusConfigSpace(vSocket: PCCardSocket; device: UInt32; configOffset: UInt32; VAR data: Byte; dataSize: UInt32): OSStatus; C;
  107. {------------------------------------------------------------------------------------
  108.     Card Enabler Types
  109. ------------------------------------------------------------------------------------}
  110.  
  111. CONST
  112.     kUnknownDeviceType            = 'unkn';
  113.     kDisplayDeviceType            = 'dspl';
  114.     kBlockDeviceType            = 'blok';
  115.     kByteDeviceType                = 'byte';
  116.     kNetworkDeviceType            = 'netw';
  117.     kSerialDeviceType            = 'ser ';
  118.     kParallelDeviceType            = 'parl';
  119.     kMemoryDeviceType            = 'mem ';
  120.     kAIMSDeviceType                = 'aims';
  121.     kSCSIDeviceType                = 'scsi';
  122.  
  123.  
  124. TYPE
  125.     PCDeviceType                        = OSType;
  126.  
  127. CONST
  128.     kAttributeType                = 0;
  129.     kMemoryType                    = 1;
  130.     kIOType                        = 2;
  131.  
  132.  
  133. TYPE
  134.     PCCardMemoryType                    = UInt32;
  135.  
  136. CONST
  137.     kUnknown                    = 'unkn';
  138.     kPCCard16                    = 'pc16';
  139.     kCardBus                    = 'cdbs';
  140.  
  141.  
  142. TYPE
  143.     PCCardArchitectureType                = OSType;
  144.  
  145. {------------------------------------------------------------------------------------
  146.   Plugin Dispatch Table
  147. ------------------------------------------------------------------------------------}
  148.  
  149. CONST
  150.     kServiceTypePCCardEnabler    = 'card';
  151.     kPCCardEnablerPluginVersion    = $00000001;
  152.     kPCCardEnablerPluginCurrentVersion = $00000001;
  153.  
  154. {    Card Enabler Entrypoints}
  155.  
  156. TYPE
  157. {$IFC TYPED_FUNCTION_POINTERS}
  158.     CEValidateHardwareProc = FUNCTION({CONST}VAR cardRef: RegEntryID): OSStatus; C;
  159. {$ELSEC}
  160.     CEValidateHardwareProc = ProcPtr;
  161. {$ENDC}
  162.  
  163. {$IFC TYPED_FUNCTION_POINTERS}
  164.     CEInitializeProc = FUNCTION({CONST}VAR cardRef: RegEntryID; replacingOld: BOOLEAN): OSStatus; C;
  165. {$ELSEC}
  166.     CEInitializeProc = ProcPtr;
  167. {$ENDC}
  168.  
  169. {$IFC TYPED_FUNCTION_POINTERS}
  170.     CECleanupProc = FUNCTION({CONST}VAR cardRef: RegEntryID; beingReplaced: BOOLEAN): OSStatus; C;
  171. {$ELSEC}
  172.     CECleanupProc = ProcPtr;
  173. {$ENDC}
  174.  
  175. {$IFC TYPED_FUNCTION_POINTERS}
  176.     CEPowerManagementProc = FUNCTION({CONST}VAR lpCardEntry: RegEntryID; powerLevel: PCCardPowerOptions): OSStatus; C;
  177. {$ELSEC}
  178.     CEPowerManagementProc = ProcPtr;
  179. {$ENDC}
  180.  
  181. {$IFC TYPED_FUNCTION_POINTERS}
  182.     CEHandleEventProc = FUNCTION({CONST}VAR cardRef: RegEntryID; theEvent: PCCardEvent): OSStatus; C;
  183. {$ELSEC}
  184.     CEHandleEventProc = ProcPtr;
  185. {$ENDC}
  186.  
  187. {$IFC TYPED_FUNCTION_POINTERS}
  188.     CEGetCardInfoProc = FUNCTION({CONST}VAR cardRef: RegEntryID; VAR cardType: PCCardDevType; VAR cardSubType: PCCardSubType; cardName: StringPtr; vendorName: StringPtr): OSStatus; C;
  189. {$ELSEC}
  190.     CEGetCardInfoProc = ProcPtr;
  191. {$ENDC}
  192.  
  193. {$IFC TYPED_FUNCTION_POINTERS}
  194.     CEAddCardPropertiesProc = FUNCTION({CONST}VAR cardRef: RegEntryID): OSStatus; C;
  195. {$ELSEC}
  196.     CEAddCardPropertiesProc = ProcPtr;
  197. {$ENDC}
  198.  
  199. {$IFC TYPED_FUNCTION_POINTERS}
  200.     CEGetDeviceCountProc = FUNCTION({CONST}VAR cardRef: RegEntryID; VAR numberOfDevices: ItemCount): OSStatus; C;
  201. {$ELSEC}
  202.     CEGetDeviceCountProc = ProcPtr;
  203. {$ENDC}
  204.  
  205. {$IFC TYPED_FUNCTION_POINTERS}
  206.     CEGetDeviceNameProc = FUNCTION(socketNumber: UInt32; deviceNumber: UInt32; deviceName: CStringPtr): OSStatus; C;
  207. {$ELSEC}
  208.     CEGetDeviceNameProc = ProcPtr;
  209. {$ENDC}
  210.  
  211. {$IFC TYPED_FUNCTION_POINTERS}
  212.     CEGetDeviceCompatibleProc = FUNCTION({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C;
  213. {$ELSEC}
  214.     CEGetDeviceCompatibleProc = ProcPtr;
  215. {$ENDC}
  216.  
  217. {$IFC TYPED_FUNCTION_POINTERS}
  218.     CEGetDeviceTypeProc = FUNCTION({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; VAR lpDeviceType: PCDeviceType): OSStatus; C;
  219. {$ELSEC}
  220.     CEGetDeviceTypeProc = ProcPtr;
  221. {$ENDC}
  222.  
  223. {$IFC TYPED_FUNCTION_POINTERS}
  224.     CEGetDeviceTypeNameProc = FUNCTION({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C;
  225. {$ELSEC}
  226.     CEGetDeviceTypeNameProc = ProcPtr;
  227. {$ENDC}
  228.  
  229. {$IFC TYPED_FUNCTION_POINTERS}
  230.     CEAddDevicePropertiesProc = FUNCTION({CONST}VAR deviceRef: RegEntryID; device: UInt32): OSStatus; C;
  231. {$ELSEC}
  232.     CEAddDevicePropertiesProc = ProcPtr;
  233. {$ENDC}
  234.  
  235. {$IFC TYPED_FUNCTION_POINTERS}
  236.     CEConfigureDeviceProc = FUNCTION({CONST}VAR deviceRef: RegEntryID; deviceNumber: UInt32): OSStatus; C;
  237. {$ELSEC}
  238.     CEConfigureDeviceProc = ProcPtr;
  239. {$ENDC}
  240.  
  241. {$IFC TYPED_FUNCTION_POINTERS}
  242.     CEFinalizeDeviceProc = FUNCTION(socket: UInt32; device: UInt32; {CONST}VAR deviceRef: RegEntryID): OSStatus; C;
  243. {$ELSEC}
  244.     CEFinalizeDeviceProc = ProcPtr;
  245. {$ENDC}
  246.  
  247. {$IFC TYPED_FUNCTION_POINTERS}
  248.     CEValidateCISProc = FUNCTION(socket: UInt32; device: UInt32; VAR lpCISChainCount: UInt32): OSStatus; C;
  249. {$ELSEC}
  250.     CEValidateCISProc = ProcPtr;
  251. {$ENDC}
  252.  
  253. {$IFC TYPED_FUNCTION_POINTERS}
  254.     CEGetFirstTupleProc = FUNCTION(socket: UInt32; device: UInt32; lpTupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; lptupleData: UNIV Ptr; VAR lpTupleBufferSize: UInt32; VAR lpFoundTuple: Byte): OSStatus; C;
  255. {$ELSEC}
  256.     CEGetFirstTupleProc = ProcPtr;
  257. {$ENDC}
  258.  
  259. {$IFC TYPED_FUNCTION_POINTERS}
  260.     CEGetNextTupleProc = FUNCTION(lpTupleIterator: PCCardTupleIterator; desiredTuple: ByteParameter; lptupleData: UNIV Ptr; VAR lpTupleBufferSize: UInt32; VAR lpFoundTuple: Byte): OSStatus; C;
  261. {$ELSEC}
  262.     CEGetNextTupleProc = ProcPtr;
  263. {$ENDC}
  264.  
  265.     PCCardEnablerPluginHeaderPtr = ^PCCardEnablerPluginHeader;
  266.     PCCardEnablerPluginHeader = RECORD
  267.         pluginDispatchTableVersion: UInt32;
  268.         reserved1:                UInt32;
  269.         reserved2:                UInt32;
  270.         reserved3:                UInt32;
  271.     END;
  272.  
  273.     PCCardEnablerPluginDispatchTablePtr = ^PCCardEnablerPluginDispatchTable;
  274.     PCCardEnablerPluginDispatchTable = RECORD
  275.         header:                    PCCardEnablerPluginHeader;
  276.                                                                         {  General functions }
  277.         validateHardwareProc:    CEValidateHardwareProc;
  278.         initializeProc:            CEInitializeProc;
  279.         cleanUpProc:            CECleanupProc;
  280.         setPCCardPowerLevel:    CEPowerManagementProc;
  281.                                                                         {  Card functions }
  282.         handleEventProc:        CEHandleEventProc;
  283.         getCardInfoProc:        CEGetCardInfoProc;
  284.         addCardProperties:        CEAddCardPropertiesProc;
  285.         getDeviceCount:            CEGetDeviceCountProc;
  286.                                                                         {  Device functions }
  287.         getDeviceName:            CEGetDeviceNameProc;
  288.         getDeviceCompatibleNames: CEGetDeviceCompatibleProc;
  289.         getDeviceType:            CEGetDeviceTypeProc;
  290.         getDeviceTypeName:        CEGetDeviceTypeNameProc;
  291.         addDeviceProperties:    CEAddDevicePropertiesProc;
  292.         configureDevice:        CEConfigureDeviceProc;
  293.         finalizeDevice:            CEFinalizeDeviceProc;
  294.                                                                         {  Card Services Overrides... }
  295.         validateCIS:            CEValidateCISProc;
  296.         getFirstTuple:            CEGetFirstTupleProc;
  297.         getNextTuple:            CEGetNextTupleProc;
  298.                                                                         {  InterruptHandlers... }
  299.         cardInterruptHandlerFunction: InterruptHandler;
  300.         cardInterruptEnableFunction: InterruptEnabler;
  301.         cardInterruptDisableFunction: InterruptDisabler;
  302.     END;
  303.  
  304. {------------------------------------------------------------------------------------
  305.     PC Card Enabler Utility calls exported by the Family
  306. ------------------------------------------------------------------------------------}
  307. {    Generic Enabler Entrypoints}
  308. FUNCTION CEInitializeCard({CONST}VAR cardRef: RegEntryID; replacingOld: BOOLEAN): OSStatus; C;
  309. FUNCTION CEFinalizeCard({CONST}VAR cardRef: RegEntryID; beingReplaced: BOOLEAN): OSStatus; C;
  310. FUNCTION CEPowerManagement({CONST}VAR lpParentID: RegEntryID; powerLevel: PCCardPowerOptions): OSStatus; C;
  311. FUNCTION CEHandleCardEvent({CONST}VAR cardRef: RegEntryID; lTheCardEvent: PCCardEvent): OSStatus; C;
  312. FUNCTION CEGetCardInfo({CONST}VAR cardRef: RegEntryID; VAR cardType: PCCardDevType; VAR cardSubType: PCCardSubType; cardName: StringPtr; vendorName: StringPtr): OSStatus; C;
  313. FUNCTION CEAddCardProperties({CONST}VAR cardRef: RegEntryID): OSStatus; C;
  314. FUNCTION CEGetDeviceCount({CONST}VAR cardRef: RegEntryID; VAR numberOfDevices: ItemCount): OSStatus; C;
  315. {  device functions }
  316. FUNCTION CEGetDeviceName(socketNumber: UInt32; deviceNumber: UInt32; deviceName: CStringPtr): OSStatus; C;
  317. FUNCTION CEGetDeviceCompatibleNames({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C;
  318. FUNCTION CEGetDeviceType({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; VAR lpDeviceType: PCDeviceType): OSStatus; C;
  319. FUNCTION CEGetDeviceTypeName({CONST}VAR deviceRef: RegEntryID; socketNumber: UInt32; deviceNumber: UInt32; name: CStringPtr): OSStatus; C;
  320. FUNCTION CEAddDeviceProperties({CONST}VAR deviceRef: RegEntryID; deviceNumber: UInt32): OSStatus; C;
  321. FUNCTION CEConfigureDevice({CONST}VAR deviceRef: RegEntryID; deviceNumber: UInt32): OSStatus; C;
  322. FUNCTION CEFinalizeDevice(socket: UInt32; device: UInt32; {CONST}VAR deviceRef: RegEntryID): OSStatus; C;
  323.  
  324. {    RegEntryID <-> socket number mapping functions}
  325. FUNCTION CEGetSocketAndDeviceFromRegEntry({CONST}VAR lpNode: RegEntryID; VAR lpSocket: UInt32; VAR lpDevice: UInt32): OSStatus; C;
  326. FUNCTION CEGetPhysicalSocketNumber({CONST}VAR socketRef: RegEntryID; {CONST}VAR lpDeviceEntry: RegEntryID; VAR lpPhysicalSocketNumber: UInt32): OSStatus; C;
  327. {    Hardware Validation Utilities}
  328. FUNCTION CECompareCISTPL_VERS_1({CONST}VAR cardRef: RegEntryID; majorVersion: ByteParameter; minorVersion: ByteParameter; manufacturer: ConstCStringPtr; productName: ConstCStringPtr; info1: ConstCStringPtr; info2: ConstCStringPtr; VAR identical: BOOLEAN): OSStatus; C;
  329. FUNCTION CECompareCISTPL_MANFID({CONST}VAR cardRef: RegEntryID; manufacturerCode: UInt16; manufacturerInfo: UInt16; VAR identical: BOOLEAN): OSStatus; C;
  330. FUNCTION CECompareMemory({CONST}VAR cardRef: RegEntryID; memType: PCCardMemoryType; offset: ByteCount; length: ByteCount; VAR dataToCompare: Byte; VAR identical: BOOLEAN): OSStatus; C;
  331. FUNCTION CEValidateCIS(socket: UInt32; device: UInt32; VAR lpCISChainCount: UInt32): OSStatus; C;
  332. FUNCTION CEDefaultInterruptHandler(ISTmember: InterruptSetMember; refCon: UNIV Ptr; theIntCount: UInt32): InterruptMemberNumber; C;
  333.  
  334. {------------------------------------------------------------------------------------
  335.     PC Card Customization Resources
  336. ------------------------------------------------------------------------------------}
  337.  
  338. CONST
  339.     kPCCardCustomInfoResType    = 'pccd';
  340.     kPCCardCustomInfoVersion    = 0;
  341.  
  342.  
  343. TYPE
  344.     PCCardCustomResourcePtr = ^PCCardCustomResource;
  345.     PCCardCustomResource = RECORD
  346.         version:                LONGINT;
  347.         customIconID:            INTEGER;                                {     ICN#, etc. resource ID }
  348.         customStringsID:        INTEGER;                                {     STR# resource ID }
  349.         customTypeStringIndex:    INTEGER;
  350.         customHelpStringIndex:    INTEGER;
  351.         customAction:            OSType;
  352.         customActionParam1:        LONGINT;
  353.         customActionParam2:        LONGINT;
  354.     END;
  355.  
  356. {$ENDC}
  357.  
  358. {$ALIGN RESET}
  359. {$POP}
  360.  
  361. {$SETC UsingIncludes := PCCardEnablerPluginIncludes}
  362.  
  363. {$ENDC} {__PCCARDENABLERPLUGIN__}
  364.  
  365. {$IFC NOT UsingIncludes}
  366.  END.
  367. {$ENDC}
  368.